查看原文
其他

Made with Unity | 还原《山海经》中的东方奇幻世界,这款手游是怎么做到的?

Unity Unity官方平台 2022-05-07

4月29日,筹备超3年、预约量破300万的回合制RPG手游《山海镜花》开启全平台公测,上线前10天,该游戏始终位于App Store免费榜榜首,总下载量超过500万次



《山海镜花》取得如此成绩也是意料之中,2019年12月5日,该游戏就被评为“年度期待新游”,可见这款手游早在正式开服前,就受到了市场的肯定与期待。


这款取材于中国志怪古籍《山海经》和长篇神魔小说《镜花缘》的游戏,带大家踏上了一段巫术与科技并存的冒险之旅。共工祝融、夸父、九尾中国神话人物,青丘国、中国、玄股国世外仙境在游戏中一一呈现,这种东方奇幻神话与二次元的碰撞着实让人着迷。

为了创作出既能够体现《山海经》之夸张怪诞,又能够符合当代流行审美的角色《山海镜花》在画风上可谓是下足了功夫。该作品集结了多位中日知名画师进行打磨,除了游戏主美苍月白龙,还有《超时空要塞》的创作者美树本晴彦、《飞轮少年》的创作者大暮维人等日本“殿堂级”画师加入。最终,为大家呈现出华丽精致、让人过目不忘的独特画风。


这次,Unity邀请到《山海镜花》的主创团队,让他们来与我们分享一下这款游戏创作的更多精彩细节。



01

新番工作室简介


可以简单的介绍下的游族-新番工作室吗?


游族新番工作室主要面向国内外的二次元市场,集结了内外部专业二次元人才,专门承接ACGN衍生品和二次元产品的研发、发行与运营工作,已代理发行《刀剑乱舞-online-》,自研发行《山海镜花》等多款二次元领域明星产品。



02

古风神韵,游戏传承


游戏的故事取材于中国古代神话《山海经》,但又不至于此。比如游戏的白泽取材于《抱朴子》、丹朱取材于《史记》等,这些都让游戏的内容更加丰富多彩。可以跟大家聊下山海镜花这款游戏的游戏剧情是如何策划的吗?


《山海经》是中国先秦时期的一部奇书,其内容无所不包,光怪陆离、极尽想象之能事,以至于司马迁曾说:“《山海经》所有怪物,余不敢言之也”。晋代陶渊明也曾经在《读山海经》中写道:“泛览《周王传》,流观《山海》图。”



可惜的是,山海图今已经散轶,但这也让我们有机会从书籍的只字片语中体会古人对华夏世界的独特理解。


所以我们在设计剧情的时候,以《山海经》、《淮南子》、《三五历纪》等古代典籍所载的光怪陆离形象为蓝本,以《镜花缘》所载地理为基石来进行创作。主要描述的是大荒世界诸般生灵的爱恨情仇,力图能够创造出一个巫术和科学并存的幻想世界,我们希望,能够通过《山海镜花》里面的角色和故事,向大家展示《山海经》这颗中华文明的灿烂明珠。



03

多元素融合,创作九尾狐


山海镜花中角色设计还邀请到了包括创作《超时空要塞》的美树本睛彦在内的众多知名画师,游戏中人物运用日系二次元的画风重新画了那些《山海经》中精怪拟人化以后的形象,可以跟开发者介绍下镜灵九尾狐从角色设计到人物模型的最终制作这个之间的具体流程吗?



首先是收到九尾狐这个角色的文案需求,从中得知他本应是青丘这个国家的君王,但是因为一些原因不得不终日戴着面具,根据剧情及角色设定相关的内容,角色设计师便开始寻找相关的素材及参考资料,在翻阅资料时发现山海经中青丘这个国家地理位置正对应现实中的日本,于是在风格上我们将一些和风元素融入到中华体系内,经过了几次修改最终九尾狐的形象终于绘制完成,为了方便3D的制作,设计师又绘制了角色的三视图用来参考,3D模型的同事们便可根据九尾狐的立绘和三视图作为依据进行模型制作,制作中也要和设计师进行沟通修正,同样经过几次修改便完成了九尾狐的模型。

 




04

创作东方幻想风格的蜥蜴列车


游戏中小隐车站设计别具一格,而蜥蜴列车的出现更让小隐多了些迷幻色彩,关于游戏中蜥蜴列车的设计可以和大家分享吗?



因为我们游戏的世界观讲的是主角一行人在大荒世界中的旅行故事,所以必定是需要一个可以穿行于世界的交通工具。在众多的载具中我们选择了列车,因为列车几乎是与旅行划等号的一个交通工具,但设计一个普通的列车无法融入我们架空幻想的世界观,于是我们想何不给列车一个生命,让列车变成活的,这样的话既有趣又跟世界观巧妙结合,同时外形我们又与蜥蜴结合,因为蜥蜴在树上平稳爬行而且时快时慢的样子让我们觉得非他莫属,与列车太契合了,一切都确定了以后便开始了设计。在一开始我们给列车装上了蜥蜴腿,完全是拟物的方式,但当列车动起来,这么多的腿的运动方式在视觉上实在有些怪异,所以我们只好将腿改成了蒸汽车的车轮,这样一来蜥蜴列车就设计完成了。




05

轻松打造酷炫特效


游戏在战斗场景中有许多炫酷的技能特效,可以跟广大的开发者们分享下游戏中的特效制作吗?


美术里最苦的就是特效师们,得全能,要能K动画、设计动画、设计镜头,要能善用TimelineCinemachine,要能做场景、做角色,要理解渲染管线、找出性能瓶颈。看似这么多不相关的技能,最终在制作一个技能时其实都用得到。他们是一个技能的设计者,而不只是完成流水线上的工作。


Cinemachine中的Virtual Camera很好用,让特效师可以放心地在场景中添加相机,而不用担心加多了相机造成重复渲染浪费。而且其自带的Cinemachine Track可以控制不同相机的切换模式,不管是想平滑过渡还是想瞬间切换,或者是追踪轨迹,都能很方便设置。



比如我们在做带特写镜头的技能时,特效师就可以在Timeline中搭建特效,同时把镜头动画也K好,如果有什么好点子立即就可以实现,而不用再去上游找动画同事描述改动需求,Timeline的便利性又一次大大节省了沟通成本。



有的角色在放技能时,需要切换显示他的专属场景,比如这个放雷电的角色,需要一个乌云天,那么通过相机上的Culling Mask剔除原场景,显示他的专属天空球和场景,既能节省渲染开销,又能增强表现效果。顺便的,特效师也就多了份场景制作的任务了。



还有一个经常用到的工具,也是Cinemachine里面自带的Dolly Track,可以轻松地创建运动路径,不管是相机还是其他什么物体,都可以绑在这条track上运动,不像以前但凡要改动这种动画就得找动画师或者进到max里忙调,在Unity里可以一步到位所见即所得,又一次节省了沟通成本


 

06

高效的性能优化


在游戏的战斗场景中,有许多角色打斗并伴有华丽的特效技能释放,这无疑给游戏的性能带来了负担,可以跟开发者们分享下山海镜花这款游戏有哪些优化技巧?


我们所有的特效师都必须要会看Frame DebuggerProfiler。性能优化方面,Unity提供的这两个工具就很好用,很容易就能找到渲染瓶颈,比如找到哪里的动态合批被打断了,被什么打断了,是否需要手动合批。

 


动态合批基本上靠运气,如果不手动干预一下的话,基本上都会被打断,比如这个复杂的技能50多Draw Call,显得有些浪费。通过Frame Debugger就能很容易复现渲染过程,找到问题所在。


通过手动设置可以合在一起的元素的Sorting OrderOrder Layer,帮助Unity动态合批,让峰值Draw Call从57降到了10。



07

动画的制作技巧


游戏中有大量制作精良的过场动画,对游戏的剧情的叙述有很大的帮助,可以跟开发者们分享下是如何在Unity 中使用Timeline制作如此精良的过场动画,有哪些技巧呢?



当初项目要做剧情动画时,还是2017年,那时候Unity刚把Timeline与Cinemachine作为预览的功能推出,项目里还没人敢用,甚至大部分人都没听过。我们原本是要按照老派的方法,让剧情策划用配表的方式控制某个角色在某个时间点在某个坐标播放什么动作,光听起来就很繁杂而且低效,而且角色一多,行为一复杂,修改起来就是灾难。

后来咱们的特效师要求用Timeline与Cinemachine做剧情搭建,并且教会了剧情策划如何使用这个工具k简单的动画。从此,策划就可以自由地搭建心目中想要的剧情表现(角色站位、相机视角、动作时机、对话时机),而不用到处找美术求人改效果了,美术反而成了辅助,只要给些美感上的建议就行,大大节省了沟通成本。

Timeline很好的一点是可以自由扩展功能,我们在原本的基础上增加了台词播放功能、对话头像功能,对话表情功能、对话暂停功能等等。这样就做到了所见即所得,不用正式运行游戏跑任务,直接在临时场景里拖放进度条就能看到最终的效果。

还有出于运行效率和降低耦合性的角度考虑,我们的一段Timeline剧情制作完成后,会把其中关联的预制体都删除,最终运行游戏时动态加载并填入Timeline的引用参数中。


在扩展后的Timeline中,直接可以看到剧情台词,方便配置的人查看。



08

后续计划


工作室后续计划还有那些Unity的作品呢?


事实上,在进行《山海镜花》开发工作的同时,我们已经开始着手筹备一些新内容。虽然目前不能透露更多,但在整体的方向上,我们会基于《山海镜花》的现有成熟体系,结合Unity引擎的优势与特性,不断探索挖掘更多的可能性。可以肯定的是,无论是对于玩家还是对于开发者,这些新内容都非常值得期待。



你是否有体验过这款游戏呢?欢迎在留言区分享你对这款游戏的看法,我们会在选择获赞最高的朋友送出游族的精美周边“程序螈”杯一只(颜色随机)。活动截止日期为9月11日(本周五)











长按关注

Unity 官方微信

第一时间了解Unity引擎动向,学习最新开发技巧



 每一个“在看”,都是我们前进的动力 

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存